# -*- coding: UTF-8 -*- 
# # 起服务试一下

import http.server
import json
from paddle_inference.paddle_inference import inference

class RequestHandlerImpl(http.server.BaseHTTPRequestHandler):
    """
    自定义一个 HTTP 请求处理器
    """
    def _set_headers(self):
            # # 1. 发送响应code
        self.send_response(200)
        # # 2. 发送响应头
        self.send_header('Content-type', 'application/json')
        self.end_headers()
    
    def do_GET(self):
        """
        处理 GET 请求, 处理其他请求需实现对应的 do_XXX() 方法
        """

        self._set_headers()

        # 3. 发送响应内容（此处流不需要关闭）
        self.wfile.write("Hello World\n".encode("utf-8"))

    def do_POST(self):
        """
        处理 POST 请求
        """
        # 0. 获取请求Body中的内容（需要指定读取长度, 不指定会阻塞）
        req_body = self.rfile.read(int(self.headers["Content-Length"])).decode()
        data = json.loads(req_body)
        print('receive data dict: ', data)
        pos = data.get('pos', [])
        if pos and max(pos)>=len(data['text']):
            self._set_headers()
            self.wfile.write("pos out of text length\n".encode('utf-8'))
        else:
            r1, r2 = model.run(data)
            print('predict result: ', r1, r2)

            self._set_headers()
            self.wfile.write((json.dumps(r1, ensure_ascii=False) + "\n" + json.dumps(r2, ensure_ascii=False) + "\n").encode('utf-8'))

model = inference()

server_address = ("", 18000)
httpd = http.server.HTTPServer(server_address, RequestHandlerImpl)
httpd.serve_forever()